Python多进程库遇到信号signal死锁问题

最近写了一个多进程调用另一个python函数的脚本,
由于这个python函数我希望设置Timeout,使用了timeout_decorator库,
该库使用signal实现。
而python的multiprocessing库在调用包含signal的进程时会出现死锁问题。
我的代码见gist

在网上遇到类似的问题:

两处修改:

修改pool.py仍未解决问题,最后用os.system把cfa_diff当做系统脚本调用,使用bash的timeout来实现超时控制。注意超时返回值为整数31744,函数原来返回值10在bash中为2560

Typo:

  • Python的with语句默认加锁,在打开文件时建议使用保证进程安全
    1
    2
    with open(file, 'w') as writer:
    # some code