1

我開發了一個GitHub回購,其示例爲multiprocess script in python2.7 for plotting。基本上,腳本分配一個進程來生成數據,並且這些數據通過隊列傳遞給負責生成該圖的第二個進程。當我運行示例'multiproc_processIPC.py'或'multiproc_poolQ​​UEUE.py'時,出現以下錯誤。 請注意,在將我的Mac升級到OSX Sierra後出現此錯誤。 有沒有人有關於這個問題起源的線索? 任何幫助將高度讚賞Mac OSX Sierra中的Python多進程繪圖問題 - 異常類型EXC_BAD_INSTRUCTION

=====錯誤報告=====

過程:python2.7 [82890] 路徑:/用戶/用戶/ * /蟒 標識符:python2.7 版本:??? 編碼類型:X86-64(母語) 父進程:python2.7 [82883] 負責:python2.7 [82890] 用戶ID:501

日期/時間:2016年12月4日22點34 :29.874 +0100 OS版本:Mac OS X的10.12.1(16B2555) 報告版本:12 匿名UUID:689587A6-D759-0F81-671D-1079942B7C42

清醒時間自啓動:9000秒

系統完整性保護:啓用

崩潰螺紋:0調度隊列:com.apple.main線程

異常類型:EXC_BAD_INSTRUCTION(SIGILL) 異常代碼:0x0000000000000001,0x0000000000000000 異常注:EXC_CORPSE_NOTIFY

終止信號:非法指令:4 終止原因:命名空間信號編碼爲0x4 終止處理:EXC處理機[0]

特定應用信息: BUG IN CLIENT LIBDISPATCH作者:_dispatch_main_queue_callback_ 4CF從錯誤的線程 稱爲墜毀,機上叉EXEC預

線程0的孩子側損毀::調度隊列:com.apple.main線程 0 libdispatch.dylib 0x00007fff8f9ddd21 _dispatch_main_queue_callback_4CF + 1291 1 com.apple。的CoreFoundation 0x00007fff7a97abe9 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 9 2 com.apple.CoreFoundation 0x00007fff7a93c00d __CFRunLoopRun + 2205 3 com.apple.CoreFoundation 0x00007fff7a93b514 CFRunLoopRunSpecific + 420 4 com.apple.HIToolbox 0x00007fff79ed8fbc RunCurrentEventLoopInMode + 240 5 com.apple.HIToolbox 0x00007fff79ed8df1 ReceiveNextEventC ommon + 432 6 com.apple.HIToolbox 0x00007fff79ed8c26 _BlockUntilNextEventMatchingListInModeWithFilter + 71 7 com.apple.AppKit 0x00007fff785c2b79 _DPSNextEvent + 1093 8 com.apple。了AppKit 0x00007fff78cd81c3 - [的NSApplication(NSEvent)_nextEventMatchingEventMask:untilDate:inMode:出隊:] + 1637 9 Tk的0x0000000104b01285 0x104a47000 + 762501 10 Tk的0x0000000104b0171f 0x104a47000 + 763679 11的Tcl 0x00000001049d75f8 Tcl_DoOneEvent + 317 12 Tk的0x0000000104a55932 0x104a47000 + 59698 13的Tcl 0x00000001049695b7 0x10495b000 + 58807 14的Tcl 0x0000000104969e46 Tcl_EvalObjv + 59 15 _tkinter.so 0x00000001037dfe39 Tkapp_Call + 617 16 libpython2.7.dylib 0x00000001000a3302 PyEval_EvalFrameEx + 3730 17 libpython2.7.dylib 0x00000001000ac913 fast_function + 179 18 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFra meEx + 3866 19 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 20 libpython2.7.dylib 0x00000001000ac988 fast_function + 296 21 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 22 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 23 libpython2 .7.dylib 0x00000001000ac988 fast_function + 296 24 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 25 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 26 libpython2.7.dylib 0x0000000100035c1b FUNCTION_CALL + 347 27 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 28 libpython2.7.dylib 0x00000001000a3cea PyEval_EvalFrameEx + 6 266 29 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 30 libpython2.7.dylib 0x00000001000ac988 fast_function + 296 31 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 32 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 33 libpython2.7名爲.dylib 0x0000000100035c1b FUNCTION_CALL + 347 34 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 35 libpython2.7.dylib 0x000000010001e7d7 instancemethod_call + 503 36 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 37 libpython2.7.dylib 0x000000010006673a slot_tp_init + 106 38 libpython2.7.dylib 0x0000000100062465 type_call + 229 39 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 40 libpython2.7.dylib 0x00000001000a35a5 PyEval_EvalFrameEx + 4405 41 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 42 libpython2.7.dylib 0x0000000100035c1b FUNCTION_CALL + 347 43 libpython2.7。 dylib 0x000000010000c761 PyObject_Call + 97 44 libpython2.7.dylib 0x000000010001e7d7 instancemethod_call + 503 45 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 46 libpython2.7.dylib 0x000000010006673a slot_tp_init + 106 47 libpython2.7.dylib 0x0000000100062465 type_call + 229 48 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 49 libpython2.7.dylib 0x00000001000a3cea PyEval_EvalFrameEx + 6266 50 libpython2.7.dylib 0x00000001000ac913 fast_function + 179 51 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 52 libpython2.7.dylib 0x00000001000ac913 fast_function + 179 53 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 54 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092 55 libpython2.7.dylib 0x0000000100035c1b FUNCTION_CALL + 347 56 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 57 libpython2.7.dylib 0x000000010001e7d7 instancemethod_call + 503 58 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 59 libpython2.7。dylib 0x000000010006673a slot_tp_init + 106 60 libpython2.7.dylib 0x0000000100062465 type_call + 229 61 libpython2.7.dylib 0x000000010000c761 PyObject_Call + 97 62 libpython2.7.dylib 0x00000001000a35a5 PyEval_EvalFrameEx + 4405 63 libpython2.7.dylib 0x00000001000ac913 fast_function + 179 64 libpython2.7.dylib 0x00000001000a338a PyEval_EvalFrameEx + 3866 65 libpython2.7.dylib 0x00000001000ac7dc PyEval_EvalCodeEx + 2092個 66 libpython2.7.dylib 0x00000001000ac856 PyEval_EvalCode + 54 67 libpython2.7.dylib 0x00000001000cb3d4 PyRun_FileExFlags + 164 68 libpython2.7.dylib 0x00000001000cc709 PyRun_SimpleFileExFlags + 409 69 libpython2.7.dylib 0x000 00001000e01ca Py_Main + 2938 70蟒0x0000000100000f14啓動+ 52

線程1: 0 libsystem_kernel.dylib 0x00007fff8fb354e6 __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff8fc1d622 _pthread_wqthread + 1023 2 libsystem_pthread.dylib 0x00007fff8fc1d211 start_wqthread + 13

螺紋2: 0 libsystem_kernel.dylib 0x00007fff8fb354e6 __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff8fc1d622 _pthread_wqthread + 1023 2 libsystem_pthread.dylib 0x00007fff8fc1d211 start_wqthread + 13

線程3: 0 libsystem_kernel.dylib 0x00007fff8fb354e6 __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff8fc1d7b5 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff8fc1d211 start_wqthread + 13

線程4: 0 libsystem_kernel.dylib 0x00007fff8fb34f4e __select + 10 1的Tcl 0x0000000104a08271 0x10495b000 + 709233 2 libsystem_pthread.dylib 0x00007fff8fc1daab _pthread_body + 180 3 libsystem_pthread.dylib 0x00007fff8fc1d9f7 _pthread_start + 286 4 libsystem_pthread.dylib 0x00007fff8fc1 D221 thread_start + 13

螺紋5 :: com.apple.NSEventThread 0 libsystem_kernel.dylib 0x00007fff8fb2d41a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff8fb2c867 mach_msg + 55 2 libsystem_kernel.dylib 0x00007fff8fb21ed1 _kernelrpc_mach_port_set_attributes + 150 3 libdispatch.dylib 0x00007fff8f9e7739 _dispatch_runloop_queue_handle_init + 171 4 libdispatch.dylib 0x00007fff8f9d84b7 _dispatch_runloop_root_queue_create_4CF + 133 5 com.apple.CoreFoundation 0x00007fff7a9091e6 __CFRunLoopF​​indMode + 502 6 com.apple.CoreFoundation 0x00007fff7a909889 CFRunLoopAddSource + 201 7 com.apple.HIToolbox 0x000的07fff79ed9897 AdjustCGSSourceInRunLoop(空隙()(__ CFRunLoop,__CFRunLoopSource *,__CFString常量*),__CFRunLoop *,__CFRunLoopSource *)+ 180 8 com.apple.HIToolbox 0x00007fff79ed97bb AddCGSSourceToRunLoop(__ CFRunLoop *)+ 78 9 com.apple.HIToolbox 0x00007fff79eecc52 _BeginEventReceiptOnThread + 181 10 com.apple.AppKit 0x00007fff7870f4f8 _NSEventThread + 37 11 libsystem_pthread.dylib 0x00007fff8fc1daab _pthread_body + 180 12 libsystem_pthread.dylib 0x00007fff8fc1d9f7 _pthread_start + 286 13 libsystem_pthread。dylib 0x00007fff8fc1d221 thread_start + 13

線程0墜毀與X86線程狀態(64位): RAX:0x0000000000000307 RBX:0x00000001003d93f0 RCX:0x00007fff8f9f9530 RDX:0x0000000000000307 RDI:0x0000000000000001 RSI:0x0000000000000006 RBP:0x00007fff5fbfa160 RSP:0x00007fff5fbfa0f0 R8 :0x0000000000000040 R9:0x00000001003d9408 R10:0xffffffffffffffff R11:0x0000000000012068 R12:0x00000001003d93e0 R13:0x00000001003d94a0 R14:0x00007fff986f5a80 R15:0x0000000102076898 RIP:0x00007fff8f9ddd21 RFL:0x0000000000010202 CR2:0x00007fff9db1224b

邏輯CPU:3 錯誤代碼:00000000 陷阱號:6個

二元圖像: 0x100000000 - 0x100000ff7 +蟒(???)/用戶/用戶/ /蟒 0x100003000 - 0x100146ff7 + libpython2.7.dylib(2.7)< 87FF0E63-058F-3190-A882-8E25F3D889C7> /用戶/用戶/ /libpython2.7.dylib 0x1002db000 - 0x1002dcff7 + _locale.so(???)/用戶/用戶/ /_locale.so 0x1002e0000 - 0x1002e6ff7 + itertools.so(???)/ Users/USER/ /itertools.so < < < < < < LINES爲簡潔起見省略>>>>>> 0x7fff8fc2b000 - 0x7fff8fc32fff libsystem_symptoms.dylib(532.1.1)< 8FB7CA37-79EF-3651-B5B9-B5E1E0947067> /usr/lib/system/libsystem_symptoms.dylib 0x7fff8fc33000 - 0x7fff8fc53ff7 libsystem_trace。 dylib(518.20.8)/usr/lib/system/libsystem_trace.dylib 0x7fff8fc54000 - 0x7fff8fc59ffb libunwind.dylib(35.3)< 9F7C2AD8-A9A7-3DE4-828D-B0F0F166AAA0> /usr/lib/system/libunwind.dylib 0x7fff8fc5a000 - 0x7fff8fc83ff7 libxpc.dylib(972.20.3)< 85EB25FD-218F-38EE-9E69-391CC8EBE6C5> /usr/lib/system/libxpc.dylib

外部修改總結:通過其他工藝靶向這種方法制成 呼叫: task_for_pid:0 thread_create:0 thread_set_state:通過這種方法制成的0 呼叫: task_for_pid:0 thread_create:0 thread_set_state:此機器上的所有方法制得的0 呼叫: task_for_pid:542465 thread_create:0 thread_set_state:0

VM區總結:文庫 只讀部分:總= 254.5M居民= 0K(0%)swapped_out_or_unallocated = 254.5M(100%) 可寫區域:總= 96.5M書面= 0K(0% )居民= 0K(0%)swapped_out = 0K(0%)未分配= 96.5M(1 00%)

      VIRTUAL REGION 

REGION TYPE SIZE COUNT(未合併的) =========== ======= ======= 行爲跟蹤256K 2 CoreUI圖像文件144K 3 調度延續8192K 2 內核的Alloc一旦8K 2 MALLOC 61.8M 54 MALLOC保護頁32K 7 存儲器標籤242 12K 2 STACK GUARD 56.0M 7 堆棧10.1M 7 VM_ALLOCATE 48K 7 __DATA 21。0M 292 __IMAGE 528K 2 __LINKEDIT 115.0M 66 __TEXT 139.5M 288 __unicode 556K 2 映射文件43.2M 9 共享存儲器16.3M 12 =========== ====== = ======= TOTAL 472.4M 747

型號:MacBookPro11,1,BOOTROM的MBP111.0138.B17,2個處理器,Intel酷睿,2,4- GHz的,8 GB,SMC 2.16f68 圖形:英特爾Iris,英特爾Iris,內置內存模塊:BANK 0/DIMM0,4GB,DDR3,1600MHz,0x80AD,0x484D54343531533641465238412D50422020 內存模塊:BANK 1/DIMM0,4GB,DDR3,1600MHz,0x80AD,0x48 4D54343531533641465238412D50422020 的AirPort:spairport_wireless_card_type_airport_extreme(0x14E4,0x112),博通BCM43xx 1.0(7.21.171.47.1a8) 藍牙:版本5.0.1f7,3個服務,17個設備,1個輸入的串行端口 網絡服務:機場,,EN0 串行ATA設備:APPLE SSD SM0256F,251 GB USB設備:USB 3.0總線 USB設備:蘋果內置鍵盤/觸控板 USB設備:BRCM20702集線器 USB設備:藍牙USB主機控制器 霹靂公交:的MacBook Pro,蘋果公司, 17.2

+0

我的猜測是,您遇到了多進程與GUI代碼之間交互的問題。你使用哪個mpl後端?如果目標是保存文件,我建議使用其中一個非交互式後端。請參閱http://matplotlib.org/faq/usage_faq.html#what-is-a-backend – tacaswell

+0

默認後端。但是,如果我使用 'import matplotlib matplotlib.use('MacOSX')' 然後我看不到情節。 更新到OSX Sierra之前一切正常工作,現在我一直在爭取這個問題一個星期... –

+0

下面的一些更新。 –

回答

0

好吧,更多信息:如果我運行第一個流程米終端,其腳本 'visl.py' 是:

#!/usr/bin/env python 
from multiprocessing import Process 
import sys 
sys.path.insert(0, './lib') 
import visualizer 

visualizer.Visualizer() 

和然後第二處理來自不同的終端的實例,其腳本 'logr.py' 是:

#!/usr/bin/env python 
from multiprocessing import Process 
import sys 
sys.path.insert(0, './lib') 
import logger 


args_logger = {'sampling_time_ms': 5, 'plotting_time_ms': 100} 
logger.Logger(args_logger) 

它的工作原理。然後:如何從一個腳本運行兩個python進程?

+0

順便說一句:我解決了這個問題的解決辦法。顯然,Python中的多進程管理存在一些問題。現在Ruby被用來啓動和處理兩個不同的進程。我知道這是一個相當可怕的解決方案,但是我想出了一個更好的主意(我是一個業餘愛好者,而不是專業程序員)。 該解決方案已發佈在GitHub倉庫中。 –