2016-03-28 21 views
2

Chaps çoklu işlem OSX, istekler, sqlite3,garip sessiz kazası:

tuhaf davranışlar ı düzeltmek için nasıl bilmiyorum rastlamak ettik. Aşağıdaki kodu varsa:

import requests, multiprocessing, sqlite3 

requests.get("http://www.google.com") 
def fn(): 
    sqlite3.connect("db") 
    print "this is never printed" 

proc = multiprocessing.Process(target = fn) 
proc.start() 
proc.join() 

Ve OS X Yosemite çalıştırın, altişlem komutu bağlamak sqlite3 sırasında yere düşer ve baskı deyimi asla çalıştırılmaz. Yanlış giden başka bir hata veya herhangi bir işaret göremiyorum.

requests.get bildirimini kaldırdığımda, yeniden çalışmaya başlar.

Ubuntu'da gayet iyi görünüyor.

Herhangi bir fikrin var mı? yerine requests ait kitaplığına geçiş

+1

"Düşüş" ile ne demek istiyorsun? Eğer hiçbir çıkış ile bitmezse (bash) "ulimit -c sınırsız" komutunu çalıştırın ve kodunuzu çalıştırın - bir "çekirdek" dökümü dosyası üretebilir. – cdarke

+0

Merhaba cdarke, yardımın için teşekkürler! Sağladığınız komutları kullanarak herhangi bir dosya üretemedim. Ancak, daha önce bir virtualenv içinde çalıştırıyordum. Sanalenvimi devre dışı bıraktım ve onu global python ikili sistemime karşı çalıştırdım ve aşağıdaki bilgi dökümü ile birlikte bir 'python'u beklenmedik bir şekilde 'hatam oldu: http://pastebin.com/vdiQFT8j Umarız bu yeterli bilgi mi? – maambmb

+2

Tamam, bir SIGSEGV geçersiz bir adres - muhtemelen en yaygın kilitlenme şeklidir. C veya C++ kodundaki geçersiz bir işaretçiden kaynaklanan * genellikle *. Ubuntu gibi başka bir yerden gelen OS X üzerinde bir modül çalıştırmaya mı çalışıyorsunuz? Ya da belki 32-bit ve 64-bit'i karıştırmak? – cdarke

cevap

1

Chaps,

bu% 100 çözüm değil, ancak bununla mücadele kimseye,

sorunu çözmek gibi görünüyor.

1

Bu bir Mac OS X/Python hatasıdır. Etrafında çalışmak için, çoklu işlem çağırmadan önce aşağıdaki kodu çalıştırın.Process: sqlite3.connect(":memory:").close(). Bkz .: http://bugs.python.org/issue27126

+0

Dostum, mutlak bir efsane! Bu – maambmb

+0

için teşekkürler Sadece eklemeliyim, bunun% 100'ü benim için işe yaramadı. Düşüşü yaklaşık% 90 oranında azaldı, ama yine de rastlantısal süreçler alıyordum. Sonuç olarak, python.org'dan python'u kurmak ve bunu standart OS X python yerine kullanmaktı. – maambmb