python多线程:阻塞可以线程化吗?

python多线程:阻塞可以线程化吗?,python,multithreading,blocking,Python,Multithreading,Blocking,我正在尝试学习线程,以下是我的代码: import threading, saspy def sas_session(sas_string): sas=saspy.SASsession() sas.submit(sas_string) sas._endsas() if __name__ == "__main__": sas_string1='data aa.para_001;\n start = datetime(); \n slept=sle

我正在尝试学习线程,以下是我的代码:

import threading, saspy

def sas_session(sas_string):
    sas=saspy.SASsession()
    sas.submit(sas_string)
    sas._endsas()       

if __name__ == "__main__":

    sas_string1='data aa.para_001;\n start = datetime(); \n slept=sleep(rand("Uniform")+10,1);\n ending=start+slept;\nrun;'

    t1 = threading.Thread(target=sas_session, args=(sas_string1,)) 

    t1.start()    
    t1.join()
我收到了错误信息:

Using SAS Config named: iomcom
Exception in thread Thread-3832:
Traceback (most recent call last):
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Myself\.conda\envs\Myself\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Users\Myself\.conda\envs\Myself\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "U:\python_projects\multi_thread\code.py", line 38, in sas_session
    sas=saspy.SASsession()
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\saspy\sasbase.py", line 448, in __init__
    self._io = SASSessionCOM(sascfgname=self.sascfg.name, sb=self, **kwargs)
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\saspy\sasiocom.py", line 200, in __init__
    self.pid = self._startsas()
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\saspy\sasiocom.py", line 215, in _startsas
    factory = dynamic.Dispatch('SASObjectManager.ObjectFactoryMulti2')
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\win32com\client\dynamic.py", line 127, in Dispatch
    IDispatch, userName = _GetGoodDispatchAndUserName(IDispatch,userName,clsctx)
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None)

Exception ignored in: <function SASSessionCOM.__del__ at 0x0000022E2F5B8438>
Traceback (most recent call last):
  File "C:\Users\Myself\.conda\envs\Myself\lib\site-packages\saspy\sasiocom.py", line 203, in __del__
    if self.adodb.State == self.STATE_OPEN:
AttributeError: 'SASSessionCOM' object has no attribute 'adodb'

需要很长时间才能完成,大概10秒左右。我想这是一个阻塞过程。这可能是原因吗?

它甚至不能进入
sas.submit()
。它在
saspy.SASsession()上失败了。
可能相关:@jordanm谢谢,它成功了,但我对这个修复程序一无所知。你能详细说明一下吗?我会等一会儿,看看是否有人能给出更详细的解释。谢谢,阿加尼无法详细说明,因为我从未在Windows上进行过任何开发。我只是在谷歌上搜索了“尚未调用CoInitialize”错误消息。
sas.submit(sas_string)