См. PEP 3156, в частности раздел о взаимодействии потоков:
http://www.python.org/dev/peps/pep-3156/#thread-interaction
В этом документе четко указаны новые методы асинхронного использования, в том числе run_in_executor (). Обратите внимание, что Executor определен в concurrent.futures, я предлагаю вам также посмотреть там.
Вы можете сделать это с помощью CreateProcess.
STARTUPINFOW si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (CreateProcessW(command, arg, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
Как заявил FigBug, CreateProcess () - это правильный путь, но я не думаю, что CreateProcess () может выполнять оператор оболочки if. Возможно, вам потребуется передать его примерно так, как команду:
"cmd.exe /c \"if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)\""
Но лучшим решением может быть использование CreateFile () , чтобы проверить, существует ли файл, и CopyFile () для скопируйте его.