

Windowsでプロセスを **fork** させるにはどうすればいいのでしょうか?  
Unix系のOSで動作するPythonで作られたGUIアプリケーションがあり、どうもfork(`multiprocessing.set_start_method("fork")`)を使っているようです。  
これはUnix系OSでのみサポートされていて、Windowsではサポートされていません。

このアプリケーションを極力コードを変えずにWindowsで動かしたいのですが何か方法はありますか?

ただ動かすだけではなくPyinstallerを使って実行ファイル`.exe`にして、普通のアプリケーションのようにクリックひとつで起動できるようにしたいです。

どうすればこれらのことをできるのでしょうか?

Cygwinやmingwなど色々あるようですがどれを使うのが良いのでしょうか?

Python3.6.4, Windows 10


CC BY-SA 3.0
2017-12-21T13:25:43.853
40451
2017-12-22T05:57:25.567
5246
question
python windows
Windows上でforkする


済みません。質問者さんの過去の質問に「Windows Subsystem for Linuxは除く」とあったので、同様の環境であれば、以下は対象外です。  
一応類似の要望を持って検索する人のために残しておきます。

Windows10であれば、Windows Subsystem for
Linuxを有効にすれば、変な工夫とかせずにUbuntu等と共通のバイナリが使えるのではないでしょうか？

ベータ版のWindows Subsystem for Linux (beta)でもfork()はサポートしていたようです。  
[Windows Subsystem for Linux の fork
は速いのか](https://qiita.com/temmings/items/0c704ddbd0dd491eb4e2)

趣旨は違いますがUnix用のベンチマークテストソフトもオプション変更程度の再コンパイルで動作するようですし。  
[(yet another) UnixBench on Bash on Ubuntu on
Windows](https://qiita.com/matarillo/items/620d21ae7c072bbf4539#_reference-1a049a10e025612eeb6b)

参考情報  
[WindowsでPython](https://www.slideshare.net/drillan/stapy22)  
[Windows Subsystem for Linuxとは？
そのインストールと使い方](http://www.buildinsider.net/enterprise/wsl/01)

ただ、GUIはサポート範囲ではない可能性が高いですね。  
GUIは別プロセスでsocket通信する改造とかだと、どっちもどっちだから悩ましいところですね。

更に継続して調べたら、同様に考える人は多そうで、こんな記事がありました。  
X-Window Serverを別途調達して、GUIはそちらに任せるパターンです。  
これなら普通のUnixプログラミングの作り方が踏襲できるのでは？  
[Windows Subsystem for Linux + X
Windowを1.024倍くらい使いこなすための方法](https://qiita.com/nishemon/items/bb3aca972404f68bfcd6)


CC BY-SA 3.0
2017-12-22T00:28:41.223
40468
2017-12-22T05:57:25.567
2017-12-22T05:57:25.567
26370
26370
40451
answer


CygwinとMinGWに言及されていますが、まさに[両者の違い](https://ja.wikipedia.org/wiki/MinGW#Cygwin%E3%81%A8%E3%81%AE%E6%AF%94%E8%BC%83)がこの点にあります。

>
> CygwinはWindows上に、Linuxや他のUNIXシステムに見られるような、完全なPOSIX層を提供することを目標にしており、互換性のために必要であれば性能も犠牲にしている。  
>  MinGWはフリーのコンパイラと各種ツールのみを提供し、性能を重視している。

ということで、Cygwinであれば`fork()`システムコールもエミュレーションによりサポートされています。


CC BY-SA 3.0
2017-12-22T01:25:56.107
40470
2017-12-22T01:25:56.107
4236
40451
answer