Как использовать win32com.client из треда?

Есть два кода, один работает:
#!/usr/bin/python2
# -*- coding: cp1251 -*-

from win32com.client import constants
import win32com.client

sapi = win32com.client.Dispatch("SAPI.SpVoice")
phrase = "Привет, мир!"
sapi.Speak(phrase, constants.SVSFlagsAsync)

А другой нет:
#!/usr/bin/python2
# -*- coding: cp1251 -*-

from thread import *
from win32com.client import constants
import win32com.client

def thread():
    sapi = win32com.client.Dispatch("SAPI.SpVoice")
    phrase = "Привет, мир!"
    sapi.Speak(phrase, constants.SVSFlagsAsync)

start_new_thread(thread, ())


Требуется, ну очень требуется запускать эти функции из треда (там подключившийся клиент крутится). Как?
В питоне я, мягко говоря, новичок.
  • Вопрос задан
  • 3923 просмотра
Решения вопроса 1
Не могу сейчас проверить, но по идее так должно работать:

#!/usr/bin/python2
# -*- coding: cp1251 -*-

import pythoncom
from thread import *
from win32com.client import constants
import win32com.client

def thread():
    sapi = win32com.client.Dispatch("SAPI.SpVoice")
    phrase = "Привет, мир!"
    pythoncom.CoInitialize()
    sapi.Speak(phrase, constants.SVSFlagsAsync)
    pythoncom.CoUninitialize()

start_new_thread(thread, ())

Или как-то в этом духе.
pythoncom живет в пакете pywin32
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы