A swordsman dressed in medieval clothing has killed two people and wounded five others in an attack in Quebec City on Halloween night, Canadian police have said.

The attacks occurred in multiple locations in the Old Quebec neighborhood, near the tourist hotspot Chateau Frontenac and the National Assembly, the Quebec provincial parliament, according to police.

The suspect -  a man in his mid-20s who has since been arrested - was armed with a sword and dressed in "medieval clothing," Quebec City police spokesman Etienne Doyon said during a press briefing.

"According to our initial information, nothing indicates to us that the suspect acted for anything other than personal motivation," police said in a tweet.

According to three witnesses quoted by Quebec newspaper Le Soleil, the attacker reportedly "slit the throat" of his first victim near the Chateau Frontenac hotel.

The man then continued on Rue des Remparts, where the second person was killed, before heading to the Old Port, wounding the other victims, according to the newspaper.

The suspect was arrested early this morning after a manhunt through the streets of Old Quebec, police spokesman Doyon said.

Police received a report about the attacks at around 10.30pm and sent several officers to the scene, including dog handlers.

The suspect was arrested shortly before 1am near the Old Port, he added. He was then "checked" and "transported to hospital for evaluation."

The suspect has been formally identified but police have not released his identity or said if he is known to them.

"It's a man who was dressed medieval. It's a man who carried a sword with him. It's stab wounds - that's all we can tell you at the moment," Doyon said.

The five survivors wounded in the rampage had suffered injuries of varying severity, he said. Police have not released any details on the identities or ages of the victims.

Police asked city residents to stay inside with the doors locked while their investigation was under way, with several neighborhoods cordoned off with a heavy police presence.